/**
   	gvalid - the JSR-250 wrapper for performing interface-based, primitives-supported validation.
   	
    Copyright (C) 2014  Grzegorz Gurgul grzegorz.gurgul@xanthreal.com

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

package com.xanthreal.gvalid;

import java.lang.annotation.Annotation;
import java.util.Arrays;
import java.util.Comparator;

public class DefaultClassNameGenerator implements ClassNameGenerator {

	public String getNameForClass(Object wrappee, Annotation[] annotationArr) {
		Arrays.sort(annotationArr, new Comparator<Annotation>() {

			public int compare(Annotation arg0, Annotation arg1) {
				String firstName = arg0.annotationType().getSimpleName();
				String secondName = arg1.annotationType().getSimpleName();
				return firstName.compareTo(secondName);
			}

		});
		StringBuilder stringBuilder = new StringBuilder();
		for (Annotation annotation : annotationArr) {
			stringBuilder.append(annotation.annotationType().getSimpleName());
		}
		return "com.xanthreal.validation." + wrappee.getClass().getSimpleName() + stringBuilder.toString()
				+ "AnnotationAdapter";
	}

}
